// -*- coding: utf-8 -*- 
/**
 * Project: AlgorithmsLearn
 * Creator: yanking
 * Create time: 2022-02-27 20:43
 * IDE: IntelliJ IDEA
 * Introduction:
 */
package com.LeetCodeT.Greedy;

public class LargestNumber {
    // 最大数，排列数组中的每一个数使之成为一个最大的整数
    int[] dn = new int[10];

    public String largestNumber(int[] nums) {
        // 单位数可以根据降序直接进行排序，多位数根据各位的数字进行排序
        // 遍历每一个数，并提取各个位置的每一个数，并进行记录

        for (int i = 0; i < nums.length; i++) {
            countNum(nums[i]);
        }
        StringBuilder builder = new StringBuilder();
        for (int i = 9; i >= 0; i--) {
            int num = dn[i];
            for (int j = 0; j < num; j++) {
                builder.append(i);
            }
        }
        return builder.toString();
    }

    private void countNum(int num) {
        if (num == 0) {
            dn[0]++;
        }
        while (num > 0) {
            dn[num % 10]++;
            num /= 10;
        }
    }
}
